package server

import (
	"io"
	"math/rand"
	"mime/multipart"
	"strconv"
	"time"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"github.com/tidwall/gjson"
)

// 文件上传
func ByteUpload(file multipart.File, suffix string) string {

	// 获取配置
	systemFile := "system.json"

	// 获取配置信息
	systemInfo := GetFile(systemFile)

	// oss配置
	ossAccessKeyId := gjson.Get(systemInfo, "oss.ossAccessKeyId").String()
	ossAccessKeySecret := gjson.Get(systemInfo, "oss.ossAccessKeySecret").String()
	ossEndpoint := gjson.Get(systemInfo, "oss.ossEndpoint").String()
	ossBucketName := gjson.Get(systemInfo, "oss.ossBucketName").String()
	ossUrl := gjson.Get(systemInfo, "oss.ossUrl").String()

	// 创建OSSClient实例。
	client, _ := oss.New(ossEndpoint, ossAccessKeyId, ossAccessKeySecret)

	// 填写存储空间名称，例如examplebucket。
	bucket, _ := client.Bucket(ossBucketName)

	// 唯一标识 (纳秒+100万内随机数)
	unixNano := strconv.FormatInt(time.Now().UnixNano(), 10)
	rand := strconv.Itoa(rand.Intn(1000000))
	unique := unixNano + rand
	// 文件名
	ossFileName := Msha1(unique)
	sha1FileName := ossFileName + "." + suffix

	// 上传
	fileByte := io.Reader(file)
	bucket.PutObject(sha1FileName, fileByte)

	// 文件oss地址
	return ossUrl + sha1FileName
}
